#!/bin/bash

echo "🚀 开始设置 NestJS TypeScript Demo 应用程序..."

# 检查 Node.js 版本
echo "📋 检查 Node.js 版本..."
if ! command -v node &> /dev/null; then
    echo "❌ Node.js 未安装，请先安装 Node.js 18+"
    exit 1
fi

NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
if [ "$NODE_VERSION" -lt 18 ]; then
    echo "❌ Node.js 版本过低，需要 18+ 版本"
    exit 1
fi

echo "✅ Node.js 版本检查通过: $(node -v)"

# 检查 Docker 和 Docker Compose
echo "🐳 检查 Docker 和 Docker Compose..."
if ! command -v docker &> /dev/null; then
    echo "❌ Docker 未安装，请先安装 Docker"
    exit 1
fi

if ! command -v docker-compose &> /dev/null; then
    echo "❌ Docker Compose 未安装，请先安装 Docker Compose"
    exit 1
fi

echo "✅ Docker 和 Docker Compose 检查通过"

# 安装依赖
echo "📦 安装项目依赖..."
npm install

# 创建环境变量文件
echo "⚙️  创建环境变量文件..."
if [ ! -f .env ]; then
    cp env.example .env
    echo "✅ 环境变量文件已创建，请编辑 .env 文件配置数据库连接信息"
else
    echo "✅ 环境变量文件已存在"
fi

# 启动数据库和 Redis
echo "🗄️  启动 MySQL 和 Redis 服务..."
docker-compose up -d

echo "⏳ 等待服务启动..."
sleep 10

# 检查服务状态
echo "🔍 检查服务状态..."
if docker-compose ps | grep -q "Up"; then
    echo "✅ 数据库和 Redis 服务已启动"
else
    echo "❌ 服务启动失败，请检查 Docker 日志"
    exit 1
fi

echo ""
echo "🎉 设置完成！"
echo ""
echo "📝 下一步操作："
echo "1. 编辑 .env 文件，配置数据库连接信息"
echo "2. 运行 'npm run start:dev' 启动开发服务器"
echo "3. 访问 http://localhost:3000/api 查看 API"
echo ""
echo "🧪 运行测试："
echo "- 单元测试: npm test"
echo "- 端到端测试: npm run test:e2e"
echo "- 测试覆盖率: npm run test:cov"
echo ""
echo "📚 更多信息请查看 README.md 文件"
